﻿
Type TypeInfoImp Extends ITypeInfoVtbl
   Declare Constructor()
End Type

Function	TypeInfoImp_QueryInterface(byval This as ITypeInfo ptr, byval riid as const IID const ptr, byval ppvObject as any ptr ptr) as HRESULT
MsgBox "TypeInfoImp_QueryInterface"
'*ppvObject = @This
if IsEqualIID(riid, @IID_IUnknown) Then
   MsgBox "IID_IUnknown"
ElseIf IsEqualIID(riid, @IID_IDispatch) Then
   MsgBox "IID_IDispatch"
ElseIf IsEqualIID(riid, @IID_IClassFactory) Then
Else
   RETURN E_NOINTERFACE
End If
Return E_NOINTERFACE
End Function

Function	TypeInfoImp_AddRef(byval This as ITypeInfo ptr) as ULONG
MsgBox "TypeInfoImp_AddRef"
Return S_OK
End Function

Function	TypeInfoImp_Release(byval This as ITypeInfo ptr) as ULONG
MsgBox "TypeInfoImp_Release"
Return S_OK
End Function

Function	TypeInfoImp_GetTypeAttr(byval This as ITypeInfo ptr, byval ppTypeAttr as TYPEATTR ptr ptr) as HRESULT
Dim p As TYPEATTR
MsgBox "TypeInfoImp_GetTypeAttr"
Return S_OK
End Function

Function	TypeInfoImp_GetTypeComp(byval This as ITypeInfo ptr, byval ppTComp as ITypeComp ptr ptr) as HRESULT
MsgBox "TypeInfoImp_GetTypeComp"
Return S_OK
End Function

Function	TypeInfoImp_GetFuncDesc(byval This as ITypeInfo ptr, byval index as UINT, byval ppFuncDesc as FUNCDESC ptr ptr) as HRESULT
MsgBox "TypeInfoImp_GetFuncDesc"
Return S_OK
End Function

Function	TypeInfoImp_GetVarDesc(byval This as ITypeInfo ptr, byval index as UINT, byval ppVarDesc as VARDESC ptr ptr) as HRESULT
MsgBox "TypeInfoImp_GetVarDesc"
Return S_OK
End Function

Function	TypeInfoImp_GetNames(byval This as ITypeInfo ptr, byval memid as MEMBERID, byval rgBstrNames as BSTR ptr, byval cMaxNames as UINT, byval pcNames as UINT ptr) as HRESULT
MsgBox "TypeInfoImp_GetNames"
Return S_OK
End Function

Function	TypeInfoImp_GetRefTypeOfImplType(byval This as ITypeInfo ptr, byval index as UINT, byval pRefType as HREFTYPE ptr) as HRESULT
MsgBox "TypeInfoImp_GetRefTypeOfImplType"
Return S_OK
End Function

Function	TypeInfoImp_GetImplTypeFlags(byval This as ITypeInfo ptr, byval index as UINT, byval pImplTypeFlags as INT_ ptr) as HRESULT
MsgBox "TypeInfoImp_GetImplTypeFlags"
Return S_OK
End Function

Function	TypeInfoImp_GetIDsOfNames(byval This as ITypeInfo ptr, byval rgszNames as LPOLESTR ptr, byval cNames as UINT, byval pMemId as MEMBERID ptr) as HRESULT
MsgBox "TypeInfoImp_GetIDsOfNames"
Return S_OK
End Function

Function	TypeInfoImp_Invoke(byval This as ITypeInfo ptr, byval pvInstance as PVOID, byval memid as MEMBERID, byval wFlags as WORD, byval pDispParams as DISPPARAMS ptr, byval pVarResult as VARIANT ptr, byval pExcepInfo as EXCEPINFO ptr, byval puArgErr as UINT ptr) as HRESULT
MsgBox "TypeInfoImp_Invoke"
Return S_OK
End Function

Function	TypeInfoImp_GetDocumentation(byval This as ITypeInfo ptr, byval memid as MEMBERID, byval pBstrName as BSTR ptr, byval pBstrDocString as BSTR ptr, byval pdwHelpContext as DWORD ptr, byval pBstrHelpFile as BSTR ptr) as HRESULT
MsgBox "TypeInfoImp_GetDocumentation"
Return S_OK
End Function

Function	TypeInfoImp_GetDllEntry(byval This as ITypeInfo ptr, byval memid as MEMBERID, byval invKind as INVOKEKIND, byval pBstrDllName as BSTR ptr, byval pBstrName as BSTR ptr, byval pwOrdinal as WORD ptr) as HRESULT
MsgBox "TypeInfoImp_GetDllEntry"
Return S_OK
End Function

Function	TypeInfoImp_GetRefTypeInfo(byval This as ITypeInfo ptr, byval hRefType as HREFTYPE, byval ppTInfo as ITypeInfo ptr ptr) as HRESULT
MsgBox "TypeInfoImp_GetRefTypeInfo"
Return S_OK
End Function

Function	TypeInfoImp_AddressOfMember(byval This as ITypeInfo ptr, byval memid as MEMBERID, byval invKind as INVOKEKIND, byval ppv as PVOID ptr) as HRESULT
MsgBox "TypeInfoImp_AddressOfMember"
Return S_OK
End Function

Function	TypeInfoImp_CreateInstance(byval This as ITypeInfo ptr, byval pUnkOuter as IUnknown ptr, byval riid as const IID const ptr, byval ppvObj as PVOID ptr) as HRESULT
MsgBox "TypeInfoImp_CreateInstance"
Return S_OK
End Function

Function	TypeInfoImp_GetMops(byval This as ITypeInfo ptr, byval memid as MEMBERID, byval pBstrMops as BSTR ptr) as HRESULT
MsgBox "TypeInfoImp_GetMops"
Return S_OK
End Function

Function	TypeInfoImp_GetContainingTypeLib(byval This as ITypeInfo ptr, byval ppTLib as ITypeLib ptr ptr, byval pIndex as UINT ptr) as HRESULT
MsgBox "TypeInfoImp_GetContainingTypeLib"
Return S_OK
End Function

sub TypeInfoImp_ReleaseTypeAttr(byval This as ITypeInfo ptr, byval pTypeAttr as TYPEATTR ptr)
MsgBox "TypeInfoImp_ReleaseTypeAttr"
End sub

sub TypeInfoImp_ReleaseFuncDesc(byval This as ITypeInfo ptr, byval pFuncDesc as FUNCDESC ptr)
MsgBox "TypeInfoImp_ReleaseFuncDesc"
End sub

sub TypeInfoImp_ReleaseVarDesc(byval This as ITypeInfo ptr, byval pVarDesc as VARDESC ptr)
MsgBox "TypeInfoImp_ReleaseVarDesc"
End sub

Constructor TypeInfoImp()
This.QueryInterface = @TypeInfoImp_QueryInterface
This.AddRef = @TypeInfoImp_AddRef
	This.Release = @TypeInfoImp_Release
	This.GetTypeAttr = @TypeInfoImp_GetTypeAttr
	This.GetTypeComp = @TypeInfoImp_GetTypeComp
	This.GetFuncDesc = @TypeInfoImp_GetFuncDesc
	This.GetVarDesc = @TypeInfoImp_GetVarDesc
	This.GetNames = @TypeInfoImp_GetNames
	This.GetRefTypeOfImplType = @TypeInfoImp_GetRefTypeOfImplType
	This.GetImplTypeFlags = @TypeInfoImp_GetImplTypeFlags
	This.GetIDsOfNames = @TypeInfoImp_GetIDsOfNames
	This.Invoke = @TypeInfoImp_Invoke
	This.GetDocumentation = @TypeInfoImp_GetDocumentation
	This.GetDllEntry = @TypeInfoImp_GetDllEntry
	This.GetRefTypeInfo = @TypeInfoImp_GetRefTypeInfo
	This.AddressOfMember = @TypeInfoImp_AddressOfMember
	This.CreateInstance = @TypeInfoImp_CreateInstance
	This.GetMops = @TypeInfoImp_GetMops
	This.GetContainingTypeLib = @TypeInfoImp_GetContainingTypeLib
	This.ReleaseTypeAttr = @TypeInfoImp_ReleaseTypeAttr
	This.ReleaseFuncDesc = @TypeInfoImp_ReleaseFuncDesc
	This.ReleaseVarDesc = @TypeInfoImp_ReleaseVarDesc
End Constructor